[aws cli]セキュリティグループへ一時的にパブリックIPアドレスを追加/削除するスクリプト
はじめに
こんにちは、yokatsukiです。
AWSの運用をしていると、一時的なセキュリティグループの設定変更がしばしば発生します。例えばRDSにリモート環境からアクセスしたい、という場合です。その際に以下の画面操作が毎回発生します。
- Webページを開く
- Management Consoleにサインイン
- EC2 Dashboardにアクセス
- Security Group画面へ移動
- 目的のセキュリティグループに対してパブリックIPアドレス追加/削除
...面倒臭いですね。面倒臭いです。これをターミナル開いてコマンド一発で実施できるようにしました。
参考にしたのはたけたけさんの下記過去エントリです。
[AWS][CLI] EC2にSSHするときだけ、security groupに自分のアドレスを追加する
準備1:プロファイルの登録
事前に発行したAWSクレデンシャル情報をプロファイルとして登録しておきます。既にプロファイルを登録されている方は操作不要です。
$ aws configure --profile AAA AWS Access Key ID [None]: ******************** AWS Secret Access Key [None]: ******************** Default region name [None]: ap-northeast-1 Default output format [None]: json
この操作によって、以下のファイルにプロファイル情報が追加されます。
$ cat ~/.aws/config [profile AAA] output = json region = ap-northeast-1
$ cat ~/.aws/credentials [AAA] aws_access_key_id=******************** aws_secret_access_key=********************
準備2:セキュリティグループID確認
セキュリティグループのGroup IDを事前に確認しておきます。Group IDは、後述のスクリプトに記入します。
スクリプト作成、実行
IPアドレス追加スクリプト
以下のスクリプトを作成します。スクリプト内変数MYSECGROUPに先程確認したセキュリティグループIDを記載しておきます。
$ cat ./addSecEntry.sh #!/bin/sh if [ -e ./myip.txt ]; then ./delSecEntry.sh fi curl -s -o ./myip.txt http://checkip.amazonaws.com/ MYIP=`cat ./myip.txt` MYSECGROUP=sg-******** aws --profile AAA ec2 authorize-security-group-ingress --group-id $MYSECGROUP --protocol tcp --port 5439 --cidr $MYIP/32
このスクリプトのポイントは以下です。
- セキュリティグループに追加したIPアドレスをmyip.txtに保存する
- myip.txtが既にある場合は、セキュリティグループ登録済みということで、一旦myip.txt記載のIPアドレスを削除して、現在のIPアドレスで再登録する
- 現在のIPアドレスはAWSのパブリックIPアドレス検索サービス(http://checkip.amazonaws.com/)を使用
- 参考:Linux インスタンス用の受信トラフィックの認可
IPアドレス削除スクリプト
以下のスクリプトを作成、実行します。前提として、上記IPアドレス追加スクリプトによって、myip.txtが作成されていることが必要になります。myip.txtが存在しない場合、事前に登録されたIPアドレスは存在しないとみなし、エラーになります。
$ cat ./delSecEntry.sh #!/bin/sh if [ ! -e ./myip.txt ]; then echo "not found ./myip.txt. Did you run the configuration of the security group?" exit fi MYIP=`cat ./myip.txt` MYSECGROUP=sg-******** aws --profile AAA ec2 revoke-security-group-ingress --group-id $MYSECGROUP --protocol tcp --port 5439 --cidr $MYIP/32 rm ./myip.txt
まとめ
モバイル環境で必要な、セキュリティグループへ自身のパブリックIPアドレスを一時追加、削除を行うスクリプトを作成しました。基本的な操作だけに頻度が高く、これでだいぶ楽になりました。
今後改良するアイデアとして、プロファイルやセキュリティグループ名をパラメータ化すると、より便利になるかなと思いますが、まずはここまで。それでは、また。